package br.com.br1.fv.mobile;

import org.droidsql.DAO;
import org.droidsql.DBHelpper;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
import br.com.br1.droidutils.MessageUtil;
import br.com.br1.droidutils.StringUtil;
import br.com.br1.fv.db.DBInitializer;
import br.com.br1.fv.db.entities.Cliente;

public class ClienteActivity extends Activity {

	Cliente cliente = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		DBHelpper.initSingleton(this, new DBInitializer());
		
		setContentView(R.layout.activity_cliente);
		
		DAO<Cliente> dao = new DAO<Cliente>(Cliente.class);
		long id = getIntent().getIntExtra("cliente", 0);
		try {
			loadData(dao.findByID(String.valueOf(id)));
		} catch (Throwable t){
			throw new IllegalStateException(t);
		}
	}
	
	private void loadData(Cliente c){
		cliente = c;
		if(cliente != null){
			getTextView(R.id.textNome).setText(cliente.nome);
			getTextView(R.id.textTelefone).setText(cliente.telefone);
			getTextView(R.id.textEndereco).setText(cliente.endereco);
			getTextView(R.id.textCpfCnpj).setText(cliente.cpf_cnpj);
		}
	}
	
	private TextView getTextView(int id){
		return (TextView) findViewById(id);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.cliente, menu);
		return true;
	}
	
	public boolean validaCliente(Cliente c){
		if(StringUtil.isEmpty(c.nome)){
			MessageUtil.showAlertMessage(this, "Informe o nome do cliente.");
			return false;
		}
		return true;
	}
	
	public void finalizarEdicao(View v){
		DAO<Cliente> dao = new DAO<Cliente>(Cliente.class);
		if(cliente == null){
			cliente = new Cliente();
		}
		cliente.nome = getTextView(R.id.textNome).getText().toString();
		cliente.telefone = getTextView(R.id.textTelefone).getText().toString();
		cliente.endereco = getTextView(R.id.textEndereco).getText().toString();
		cliente.cpf_cnpj = getTextView(R.id.textCpfCnpj).getText().toString();
		try {
			if(validaCliente(cliente)){
				if(cliente._id > 0){
					dao.save(cliente);
				} else {
					dao.addNew(cliente);
				}
			}
		}  catch (Throwable t){
			MessageUtil.showErrorMessage(this, t);
		}
	}
	
	public void cancelarEdicao(View v){
		
	}

}
